#include <iostream>
#include <cstdio>
#include <iomanip>
#include <vector>
#include <set>
#include <algorithm>
#include <string>
#include <cmath>

using namespace std;

#define mp make_pair
#define pb push_back
#define all(x) x.begin(),x.end()

typedef long long ll;

vector<int> ans;
vector<int> opens, closes;
vector<int> sortedopens, sortedcloses;

inline bool compOpen(int io1, int io2) {
	return opens[io1] < opens[io2];
}
inline bool compClose(int ic1, int ic2) {
	return closes[ic1] < closes[ic2];
}

struct cmp{
	inline bool operator()(const int iseg1, const int iseg2) {
		return closes[iseg1] < closes[iseg2];
	}
};

int main(){
	ios_base::sync_with_stdio(false);

	int T;
	scanf("%d", &T);

	for(int t = 0; t < T; t++) {
		int n, m;
		scanf("%d %d", &n, &m);
		ans.assign(m, -1);
		opens.resize(m);
		closes.resize(m);
		sortedopens.clear();
		sortedcloses.clear();

		set<int, cmp> opened;
		for(int i = 0; i < m; i++) {
			sortedopens.pb(i);
			sortedcloses.pb(i);

			scanf("%d %d", &opens[i], &closes[i]);
			if(closes[i] < opens[i]) opened.insert(i);;
		}

		sort(all(sortedopens), compOpen);
		sort(all(sortedcloses), compClose);

		int i = 0;
		int iopen = 0;
		while(i < n) {
			while(iopen < m && opens[sortedopens[iopen]] == i) {
				if(ans[sortedopens[iopen]] == -1) {
					opened.insert(sortedopens[iopen]);
					if(closes[sortedopens[iopen]] < opens[sortedopens[iopen]])
						closes[sortedopens[iopen]] = m - 1;
				}
				iopen++;
			}
			if(opened.size() == 0) {
				if(iopen == m) break;
				i = opens[sortedopens[iopen]];
				continue;
			}

			while(opened.size() > 0) {
				int bestOpened = *opened.begin();
				opened.erase(opened.begin());

				if(closes[bestOpened] >= i && ans[bestOpened] == -1) {
					ans[bestOpened] = i;
					break;
				}
			}
			i++;

		}
		bool ok = true;
		for(int i = 0; i < m; i++) {
			if(ans[i] == -1) {
				ok = false;
				break;
			}
		}

		if(ok) printf("YES\n");
		else printf("NO\n");
	}

	return 0;
}